﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;
using EpsiRisk.MoteurJeu;
using EpsiRisk.DonneesPlateau;


namespace EpsiRisk.AffichageJeu
{
    public class ClassZoneJeu : ClassZone
    {
        public ClassZoneJeu()
        {
            height = 520;
            width = 800;
            position = new Vector2(0, 0);
            backcolor = Color.SkyBlue;
            offset = new Vector2(0, 60);
            calqueColor = Color.LightGray;
            calqueColor.A = 128;
        }

        /// <summary>
        /// couleur permettant la surbrillance
        /// </summary>
        public Color calqueColor;

        public Vector2 offset;

        public static Vector2 stringOffset = new Vector2(-10, -10);

        public Texture2D calque;

        public Texture2D calqueb;

        public static Texture2D frontieres;

        public int ZoomFactor = 1;

        public bool desactiveClicTerritoire = false;

        internal override void initialiser(ContentManager content)
        {
            if (ClassDonneesGlobales.plateauCourant != null)
            {
                ClassDonneesGlobales.plateauCourant.loadSprites(content);
            }
            frontieres = content.Load<Texture2D>("Plateaux/detectionMap/frontieres");
        }

        internal override void Draw(SpriteBatch spriteBatch)
        {
            base.Draw(spriteBatch);
            spriteBatch.Begin();
            //spriteBatch.Draw(ClassDonneesGlobales.plateauCourant.spriteFondCarte, offset, Color.White);
            foreach (ClassSousTerritoire st in ClassDonneesGlobales.plateauCourant.listeSousTerritoires())
            {
                if (st.calque != null)
                {
                    spriteBatch.Draw(st.calque, offset, st.Proprietaire.cCouleur);
                }
            }
            if (calque != null)
            {
                spriteBatch.Draw(calque, offset, calqueColor);//Surbrillance 1
            }
            if (calqueb != null)
            {
                spriteBatch.Draw(calqueb, offset, calqueColor);// Surbrillance 2
            }
            foreach (ClassSousTerritoire st in ClassDonneesGlobales.plateauCourant.listeSousTerritoires())
            {
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, st.nbArmees.ToString(), st.armeesDisplayPosition + offset + stringOffset, Color.Black);
            }
            spriteBatch.Draw(frontieres, offset, Color.White);
            spriteBatch.End();

        }

        internal override void clicXY(int x, int y)
        {

            base.clicXY(x, y);
            if (!desactiveClicTerritoire && (ClassEtatPartie.joueurCourant() == null || ClassEtatPartie.joueurCourant().estHumain))
            {
                ClassSousTerritoire st = ClassDetectionClicTerritoire.TerritoireEnXY(x - (int)offset.X, y - (int)offset.Y);
                if (ClicSurSousTerritoireEvent != null && st != null)
                {
                    ClicSurSousTerritoireEvent(st, new EventArgs());
                }
            }
        }

        public static event EventHandler ClicSurSousTerritoireEvent;
    }
}
